package com.yf.cn.mysb.controller;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import com.yf.cn.mysb.entity.UserInfo;

@RestController 
@RequestMapping(value="/users")
public class UserInfoController {
	  // 创建线程安全的Map 
    static Map<Long, UserInfo> users = Collections.synchronizedMap(new HashMap<Long, UserInfo>()); 
 
    @RequestMapping(value="/", method=RequestMethod.GET) 
    public List<UserInfo> getUserList() { 
        // 处理"/users/"的GET请求，用来获取用户列表 
        // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 
        List<UserInfo> r = new ArrayList<UserInfo>(users.values()); 
        return r; 
    } 
 
    @RequestMapping(value="/", method=RequestMethod.POST,produces="application/json;charset=UTF-8") 
    public String postUser(@ModelAttribute UserInfo user) { 
        // 处理"/users/"的POST请求，用来创建User 
        // 除了@ModelAttribute绑定参数之外，还可以通过@RequestParam从页面中传递参数 
        users.put(user.getId(), user); 
        return "success"; 
    } 
 
    @RequestMapping(value="/{id}", method=RequestMethod.GET) 
    public UserInfo getUser(@PathVariable Long id) { 
        // 处理"/users/{id}"的GET请求，用来获取url中id值的User信息 
        // url中的id可通过@PathVariable绑定到函数的参数中 
        return users.get(id); 
    } 
 
    @RequestMapping(value="/{id}", method=RequestMethod.PUT) 
    public String putUser(@PathVariable Long id, @ModelAttribute UserInfo user) { 
        // 处理"/users/{id}"的PUT请求，用来更新User信息 
    	UserInfo u = users.get(id); 
        u.setName(user.getName()); 
        u.setBirthday(user.getBirthday()); 
        users.put(id, u); 
        return "success"; 
    } 
 
    @RequestMapping(value="/{id}", method=RequestMethod.DELETE) 
    public String deleteUser(@PathVariable Long id) { 
        // 处理"/users/{id}"的DELETE请求，用来删除User 
        users.remove(id); 
        return "success"; 
    } 
    
    @RequestMapping(value="/list") 
    public ModelAndView getList() { 
        // 处理"/users/{id}"的DELETE请求，用来删除User 
    	ModelAndView mv = new ModelAndView("/users/list");//默认为forward模式  
        return mv; 
    } 


}
